Το πραγματικό κόστος της δημιουργίας temporary πινάκων είναι ότι προκαλούν fragmentation στη βάση. Επίσης, ένας πιθανός κίνδυνος είναι ότι ..... πάντα κάποιος άλλος θα βρεθεί να ξανατρέξει την ίδια διαδικασία που δεν έπρεπε να τρέξει και θα βρεθούν δύο να προσπαθούν να πειράξουν τον ίδιο πίνακα! Τέλος, υπάρχει ο πιο πιθανός κίνδυνος να ξεμείνουν οι πίνακες επειδή για κάποιο λόγο διακόπηκε το batch, είτε λόγω χαμένης σύνδεσης, κρεμάσματος της εφαρμογής, πιθανό deadlock, timeout κλπ. Αν μάλιστα σκεφτείς ότι οι temp πίνακες χρησιμοποιούνται κυρίως για batch processing μεγάλης διάρκειας, η πιθανότητα να μείνει κάτι είναι δεν είναι αμελητέα.
Εφόσον υπάρχει πραγματική ανάγκη να χρησιμοποιήσεις temp πίνακες, θα πρέπει να χρησιμοποιήσεις τις δυνατότητες που σου δίνει η βάση σου. Για παράδειγμα, ο SQL Server σου επιτρέπει να δημιουργήσεις temporary tables απλά προσθέτωντας το # στο όνομα του πίνακα. Οι πίνακες αυτοί δημιουργούνται στην tempDB οπότε δεν προκαλούν fragmentation στις βάσεις σου, δημιουργούνται ανά χρήστη οπότε δεν υπάρχει θέμα χρήσης από άλλο batch και τέλος διαγράφονται αυτόματα όταν δεν χρειάζονται πλέον.
Όπως όμως σου είπε και ο Μάνος, πρέπει να μας πεις ΓΙΑΤΙ του θέλεις. Ίσως να μην κάνουν για την περίπτωση σου, ίσως να υπάρχουν άλλες, πιο εύκολες λύσεις, ίσως πάλι να είναι ακριβώς αυτό που ζητάς αλλά ... τί ζητάς?
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos